package Servidor;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;

import util.SocketManager;

public class Server {
	
	public static int puerto=3000;
	private static int conexionesMaximas=5;
	private static int conexionesActivas=0;
	private static ServerSocket  socketServidor;
	private static Socket socket;
	private static SocketManager socketManager;
	private static String CRLF= "\r\n";
	private static String usuarioActual;
	
	public Server(String usuario)
	{
		usuarioActual=usuario;
	}
	public Server()
	{
		
	}
	
	public static HashMap<String, SocketManager> HMconexionesActivas;
	
	public static void main(String [] args)
	{
		Server servidor =new Server();
		
		HMconexionesActivas=new HashMap<String, SocketManager>();
		try {
			socketServidor= new ServerSocket(puerto);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		while(true)
		{
			try {
				socket= socketServidor.accept();
				socketManager=new SocketManager(socket);
				Request request=new Request(socketManager);
				if(conexionesActivas<conexionesMaximas)
				{
					conexionesActivas++;
					socketManager.Escribir("Conexion realizada con exito."+CRLF);
					Thread hilo= new Thread(request);
					hilo.run();
					
				}
				else
				{
					socketManager.Escribir("Imposible Conectarse, se ha superado el limite de conexiones."+CRLF);
					socketManager.CerrarSocket();
					socket.close();
				}
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
	}
	

}
